﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

public partial class admincp_qlgiaovien : AdminPage
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void Page_PreRender(object sender, EventArgs e)
    {
        try
        {
            switch (Request.QueryString["hanhdong"].ToString().ToLower())
            {
                case "themmoi":
                    lblLoaiHanhdong.Text = "Thêm mới giáo viên:";
                    break;
                case "capnhat":
                    lblLoaiHanhdong.Text = "Cập nhật giáo viên:";

                    //Kiểm tra xem query string magiaovien có tồn tại và giá trị có tồn tại trong CSDL
                    if (Request.QueryString["magiaovien"] != null && KiemTraTonTaiMaGiaoVien(Request.QueryString["magiaovien"].ToString()))
                    {
                        //Tạo Seesion["MaGiaoVien"] chứa mã môn học dùng kiểm tra mã môn học với mã môn học trong Query String khi tiến hành lưu
                        Session["MaGiaoVien"] = Request.QueryString["magiaovien"].ToString();
                        GiaoVien giaovien = db.GiaoViens.Single(gv => gv.MaGiaoVien == Session["MaGiaoVien"].ToString());
                        txtMaGiaoVien.Text = giaovien.MaGiaoVien;
                        txtMaGiaoVien.ReadOnly = true;
                        txtMaGiaoVien.Enabled = false;
                        txtTenGiaoVien.Text = giaovien.TenGiaoVien;
                        txtMatKhau.Text = Security.DecryptString(giaovien.MatKhau, Passphrase);
                        txtXacNhanMatKhau.Text = Security.DecryptString(giaovien.MatKhau, Passphrase);
                        radNam.Checked = giaovien.GioiTinh != null ? (bool)giaovien.GioiTinh : false;
                        radNu.Checked = giaovien.GioiTinh != null ? !(bool)giaovien.GioiTinh : true;
                        txtNgaySinh.Text = String.Format("{0:dd/MM/yyyy}", giaovien.NgaySinh);
                        txtDiaChi.Text = giaovien.DiaChi;
                        txtDienThoai.Text = giaovien.DienThoai;
                        txtEmail.Text = giaovien.Email;
                        radSuDung.Checked = giaovien.TrangThai != null ? (bool)giaovien.TrangThai : false;
                        radKhongSuDung.Checked = giaovien.TrangThai != null ? !(bool)giaovien.TrangThai : true;
                    }
                    else //Chuyển trang sang trang báo lỗi
                    {
                    }
                    break;
            }
        }
        catch
        {
            //Chuyển trang sang trang báo lỗi
        }
    }

    private bool KiemTraTonTaiMaGiaoVien(string MaGiaoVien)
    {
        try
        {
            //Nếu tìm không thấy thì phát sinh lỗi --> chuyển sang khối lệnh catch
            GiaoVien giaovien = db.GiaoViens.Single(gv => gv.MaGiaoVien == MaGiaoVien);
            return true;
        }
        catch
        {
            return false;
        }
    }

    protected void LuuGiaoVien(object sender, EventArgs e)
    {
        try
        {
            GiaoVien giaovien = new GiaoVien();
            switch (Request.QueryString["hanhdong"].ToString().ToLower())
            {
                case "themmoi":
                    giaovien.MaGiaoVien = txtMaGiaoVien.Text;
                    giaovien.MatKhau = Security.EncryptString(txtMatKhau.Text, Passphrase);
                    giaovien.TenGiaoVien = txtTenGiaoVien.Text;
                    giaovien.GioiTinh = radNam.Checked;
                    if(!String.IsNullOrEmpty(txtNgaySinh.Text))
                        giaovien.NgaySinh = DateTime.ParseExact(txtNgaySinh.Text, "dd/MM/yyyy", null);
                    giaovien.DiaChi = txtDiaChi.Text;
                    giaovien.DienThoai = txtDienThoai.Text;
                    giaovien.Email = txtEmail.Text;
                    if (fulAvatar.HasFile && !String.IsNullOrEmpty(fulAvatar.PostedFile.FileName))
                    {
                        fulAvatar.SaveAs(MapPath("stores/avatar/") + txtMaGiaoVien.Text + Path.GetExtension(fulAvatar.PostedFile.FileName));
                        giaovien.Avatar = txtMaGiaoVien.Text + Path.GetExtension(fulAvatar.PostedFile.FileName);
                    }
                    giaovien.TrangThai = radSuDung.Checked;
                    db.GiaoViens.InsertOnSubmit(giaovien);
                    db.SubmitChanges();
                    Response.Redirect("giaovien.aspx");
                    break;
                case "capnhat":
                    if (Session["MaGiaoVien"].ToString() == Request.QueryString["magiaovien"].ToString())
                    {
                        giaovien = db.GiaoViens.Single(gv => gv.MaGiaoVien == Session["MaGiaoVien"].ToString());
                        giaovien.TenGiaoVien = txtTenGiaoVien.Text;
                        if (!String.IsNullOrEmpty(txtMatKhau.Text))
                            giaovien.MatKhau = Security.EncryptString(txtMatKhau.Text, Passphrase);
                        giaovien.GioiTinh = radNam.Checked;
                        giaovien.NgaySinh = DateTime.ParseExact(txtNgaySinh.Text, "dd/MM/yyyy", null);
                        giaovien.DiaChi = txtDiaChi.Text;
                        giaovien.DienThoai = txtDienThoai.Text;
                        giaovien.Email = txtEmail.Text;
                        if (fulAvatar.HasFile && !String.IsNullOrEmpty(fulAvatar.PostedFile.FileName))
                        {
                            fulAvatar.SaveAs(MapPath("stores/avatar/") + txtMaGiaoVien.Text + Path.GetExtension(fulAvatar.PostedFile.FileName));
                            giaovien.Avatar = txtMaGiaoVien.Text + Path.GetExtension(fulAvatar.PostedFile.FileName);
                        }
                        giaovien.TrangThai = radSuDung.Checked;
                        db.SubmitChanges();
                        if (Session["MaGiaoVien"] != null)
                            Session.Remove("MaGiaoVien");
                        Response.Redirect("giaovien.aspx");
                    }
                    else //Chuyển trang sang trang báo lỗi
                    {
                    }
                    break;
                default: //Chuyển trang sang trang báo lỗi
                    break;
            }

        }
        catch
        {
            //Chuyển trang sang trang báo lỗi
        }
    }
}